<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<title>Voto-E: Administracion de usuarios</title>
</head>
<body>
<!-- fichero de configuracion -->
<?php require('tools.php'); ?> 
<?php check_https(); ?>
<!-- COMIENZO DEL TEXTO -->
<?php
$conn=db_Open("Error en conexi�n con la DataBase");
// autentificamos ( por si las moscas alguno llama directamente al cgi )
$res=certify_user($conn,$evote_email,$evote_userid,$evote_passwd,"Error en autentificaci�n del administrador");
if ($operacion=="new_user") {
	printf("<h1>Inscripci�n de usuario pendiente de registro</h1>\n");
	grant_access($conn,$res,4,"Insuficiente nivel de privilegio");
	list_user_data($conn,$userid,"usuarios_tmp");
	// formulario de aceptaci�n de datos
	printf ("<form name=accept_new_user action=\"%s/admin_user.php\" method=\"post\">\n",get_url("SECUREURL"));
	printf("<p>ID de grupo: <select name=\"groupid\">");
	printf("<option value=\"0\">0 - Observador: Acceso a foros\n");
        printf("<option value=\"1\">1 - Usuario: Derecho a votar\n");
        printf("<option value=\"2\">2 - Usuario: Derecho a solicitar consultas\n");
        printf("<option value=\"3\">3 - Consultor: Derecho a elaborar consultas y listados\n");
        printf("<option value=\"4\">4 - Administrador: Alta de usuarios y consultas\n");
        printf("<option value=\"5\">5 - Administrador: Edici�n/Borrado de usuarios y consultas\n");
        printf("<option value=\"6\">6 - Dios: Acceso a consola SQL. Derecho a Todo\n");
	printf("</select></p>\n");
	printf ("<input type=radio name=\"yesno\" value=1 checked>Inscribir &nbsp;\n");
	printf ("<input type=radio name=\"yesno\" value=0>Rechazar <p>Motivo rechazo: <input type=text name=motivo value=\"\" size=80 maxlength=80><p>\n");
	printf ("<input type=submit value=\"Procesar petici�n\">\n");
	printf ("<input type=hidden name=\"userid\" value=%s>\n",$userid);
	printf ("<input type=hidden name=\"operacion\" value=\"process_add_user\">\n");
}

if ($operacion=="add_user") {
	grant_access($conn,$res,4,"Insuficiente nivel de privilegio");
	// truco: lo metemos en la database temporal y simulamos una
	// aceptaci�n de datos de usuario
	printf("<h1>Alta manual de usuario</h1>\n");
	// primero verificamos integridad de datos
        $count=0;
        $field="Faltan por rellenar los campos: ";
        if($nombre=="") { $count++; $field=sprintf("%s nombre,",$field); }
        if($apellidos=="") { $count++; $field=sprintf("%s apellidos,",$field); }        if($direccion=="") { $count++; $field=sprintf("%s direcci�n,",$field); }        if($telefono=="") { $count++; $field=sprintf("%s telefono,",$field); }
        if($poblacion=="") { $count++; $field=sprintf("%s poblaci�n,",$field); }        if($email=="") { $count++; $field=sprintf("%s email,",$field); }
        if ( $count > 0 ) {
                echo "<h3>Error en Alta manual de usuario</h3>\n";
                echo $field;
		cierra_html();
                exit ;
        } 
	$passwd1=$passwd2=$email; // by default passwd = email
	// insertar en db temporal
        $com = sprintf( "INSERT INTO usuarios_tmp ( nombre , apellidos , direccion , telefono , email, passwd) VALUES ( '%s' , '%s' , '%s %s' , '%s' , '%s' , '%s' );\n" , $nombre, $apellidos, $direccion, $poblacion, $telefono, $email , crypt($passwd1,$passwd2) );
        $res = sqlquery( $conn,$com,"Error en inclusi�n de usuario en la base de datos" ); 
	// buscamos el userid del usuario que acabamos de insertar
	$userid=get_userid($conn,$email,"usuarios_tmp");
	// formulario de aceptaci�n de datos
	list_user_data($conn,$userid,"usuarios_tmp");
	printf ("<form name=accept_new_user action=\"%s/admin_user.php\" method=\"post\">\n",get_url("SECUREURL"));
	printf ("<input type=radio name=\"yesno\" value=1 checked>Inscribir &nbsp;\n");
	printf ("<input type=radio name=\"yesno\" value=0>Rechazar\n");
	printf ("<input type=submit value=\"Procesar petici�n\">\n");
	printf ("<input type=hidden name=\"userid\" value=%s>\n",$userid);
	printf ("<input type=hidden name=\"groupid\" value=1>\n");
	printf ("<input type=hidden name=\"operacion\" value=\"process_add_user\">\n");
}

if ($operacion=="edit_user") {
	printf("<h1>Modificaci�n de Datos de usuario</h1>\n");
	$level=grant_access($conn,$res,5,"Insuficiente nivel de privilegio");
	printf ("<form name=edit_new_user action=\"%s/admin_user.php\" method=\"post\">\n",get_url("SECUREURL"));
	// presentamos formulario de tabla de datos del usuario, para edicion
	$user=lookup_user($conn,$userid,"usuarios");
	if ( $level <= $user->groupid )
		show_error("No puede editar datos de usuario con nivel de privilegio igual o mayor al suyo");
	printf("<table>\n");
	printf("<tr><th>User ID</th><td>%s</td></tr>\n",$user->userid);
	printf("<tr><th>Apellidos</th><td> <input type=text name=\"data[apellidos]\" size=60 maxlength=60 value=\"%s\"></td></tr>\n",$user->apellidos);
	printf("<tr><th>Nombre</th><td> <input type=text name=\"data[nombre]\" size=60 maxlength=60 value=\"%s\"></td></tr>\n",$user->nombre);
	printf("<tr><th>Direcci�n</th><td> <input type=text name=\"data[direccion]\" size=60 maxlength=60 value=\"%s\"></td></tr>\n",$user->direccion);
	printf("<tr><th>Tel�fono</th><td> <input type=text name=\"data[telefono]\" size=20 maxlength=20 value=\"%s\"></td></tr>\n",$user->telefono);
	printf("<tr><th>E-Mail</th><td> <input type=text name=\"data[email]\" size=40 maxlength=40 value=\"%s\"></td></tr>\n",$user->email);
	printf("<tr><th>ID de grupo</th><td><select name=\"data[groupid]\">");
	printf("<option value=\"0\">0 - Observador: Acceso a foros\n");
        printf("<option value=\"1\">1 - Usuario: Derecho a votar\n");
        printf("<option value=\"2\">2 - Usuario: Derecho a solicitar consultas\n");
        printf("<option value=\"3\">3 - Consultor: Derecho a elaborar consultas y listados\n");
        printf("<option value=\"4\">4 - Administrador: Alta de usuarios y consultas\n");
        printf("<option value=\"5\">5 - Administrador: Edici�n/Borrado de usuarios y consultas\n");
        printf("<option value=\"6\">6 - Dios: Acceso a consola SQL. Derecho a Todo\n");
	printf("</select></td></tr> \n");
	printf("<tr><th>Generar nueva contrase�a</th><td> <input type=checkbox name=\"data[newpasswd]\" value=1></td></tr>\n");
	printf("</table>\n");
	printf ("<input type=radio name=\"yesno\" value=1 checked>Modificar &nbsp;\n");
	printf ("<input type=radio name=\"yesno\" value=0>Mantener\n");
	printf ("<input type=submit value=\"Procesar petici�n\">\n");
	printf ("<input type=hidden name=\"userid\" value=%s>\n",$userid);
	printf ("<input type=hidden name=\"old_email\" value=%s>\n",$user->email);
	printf ("<input type=hidden name=\"operacion\" value=\"process_edit_user\">\n");
}

if ($operacion=="del_user") {
	printf("<h1>Eliminaci�n de registro de usuario</h1>\n");
	grant_access($conn,$res,5,"Insuficiente nivel de privilegio");
	list_user_data($conn,$userid,"usuarios");
	// formulario de aceptaci�n de datos
	printf ("<form name=delete_new_user action=\"%s/admin_user.php\" method=\"post\">\n",get_url("SECUREURL"));
	printf ("<input type=radio name=\"yesno\" value=1 checked>Borrar &nbsp;\n");
	printf ("<input type=radio name=\"yesno\" value=0>Mantener\n");
	printf ("<input type=submit value=\"Procesar petici�n\">\n");
	printf ("<input type=hidden name=\"userid\" value=%s>\n",$userid);
	printf ("<input type=hidden name=\"operacion\" value=\"process_del_user\">\n");
}

if ($operacion=="process_add_user") {
	printf("<h1>Inscripci�n de usuario pendiente de registro</h1>\n");
	grant_access($conn,$res,4,"Insuficiente nivel de privilegio");
	if ( $yesno==0 ) { // usuario rechazado
		$user=lookup_user($conn,$userid,"usuarios_tmp");
		remove_user($conn,$userid,"usuarios_tmp");
		printf ("Usuario rechazado");
		// notifica correo
		if ( $motivo != "") done_refuse_user($user,$motivo);
	} else { // usuario aceptado
		accept_user($conn,$userid,$groupid);
		list_user_data($conn,$userid,"usuarios");
		printf ("<p>Usuario a�adido</p>");
		// enviamos notificaci�n por correo
		$user=lookup_user($conn,$userid,"usuarios");
		// enviamos mail y ajustamos syslog
		done_register_user($user);
	}
}

if ($operacion=="process_edit_user") {
	printf("<h1>Modificaci�n de Datos de usuario</h1>\n");
	$admin=lookup_user($conn,$res,"usuarios");
	if ( $admin->groupid < 5 ) 
		show_error("<p>Insuficiente nivel de privilegio</p><p>Operaci�n cancelada</p>");
	if ( ($admin->groupid!=6) && ($admin->groupid <= $data[groupid] ) )
		show_error("<p>Error: No se puede asignar el GroupID pedido</p><p>Operaci�n cancelada</p>\n");
	if ( $yesno==0 ) printf ("Operaci�n cancelada");
	else {
		$user=lookup_user($conn,$userid,"usuarios");
		// chequeamos actualizacion de contrase�a
		$data[passwd]=$user->passwd;
		$newpasswd="";
		if($data[newpasswd]==1) {
			// generamos nueva contrase�a. 
			// metodo cutre: passwd=crypt(email,random)
			$newpasswd=crypt($user->email);
			$data[passwd]=crypt($newpasswd);
		}
		change_user($conn,$userid,$data);
		list_user_data($conn,$userid,"usuarios");
		printf ("<p>Datos de usuario actualizados</p>");
		// enviamos notificaci�n por correo
		$user=lookup_user($conn,$userid,"usuarios");
		done_edit_user($user,"",$newpasswd);
		if($old_email!=$user->email) done_edit_user($user,$old_email,$newpasswd);
	}
}

if ($operacion=="process_del_user") {
	printf("<h1>Eliminaci�n de registro de usuario</h1>\n");
	grant_access($conn,$res,5,"Insuficiente nivel de privilegio");
	if ( $yesno==0 ) printf ("Operaci�n cancelada");
	else {
		// cogemos los datos antes de borrarlos...
		$user=lookup_user($conn,$userid,"usuarios");
		list_user_data($conn,$userid,"usuarios");
		remove_user($conn,$userid,"usuarios");
		printf ("<p>Usuario eliminado de la base de datos</p>");
		// enviamos notificaci�n por correo
		done_del_user($user);
	}
}

// marranada para pasar datos de un form al siguiente... lo siento :(
printf ("<input type=hidden name=\"evote_email\" value=\"%s\">\n",$evote_email);
printf ("<input type=hidden name=\"evote_userid\" value=\"%s\">\n",$evote_userid);
printf ("<input type=hidden name=\"evote_passwd\" value=\"%s\">\n",$evote_passwd);
printf("</form>\n");
db_Close($conn);
?>

<!-- FIN DEL TEXTO -->
</body>
</html>
